#ifndef _ABSTRACTMEDIASOURCE_H
#define _ABSTRACTMEDIASOURCE_H

#include "qstring.h"
#include "QVariant"

/** @class AbstractMediaSource
 *
 * This is an abstract interface only meant to create a media
 * source, defined by its file full path.
 * Model-View logic will deal with this abstract type.
 * Concrete subclesses will wrap the plugin specific media source.
 */

class AbstractMediaSource
{
public:
   AbstractMediaSource() {}

   /** full path of media file */
   virtual QString fileName() const = 0;

   /** a string that identifies the resource within the application.
    *  Implementation is in charge of the model, and it's normally the
    *  base name of file, unless there are confilcts. */
   virtual QString stringId() const = 0;

   /**
    * binary media data to be played. Format is plugin specific,
    * but must be a meta-type
    */
   virtual QVariant mediaContent() const = 0;
};

//bool operator <(const AbstractMediaSource &left, const AbstractMediaSource &right);


#endif // _ABSTRACTMEDIASOURCE_H
